Автоматическое удаление устаревших кортежей из спейса¶
Доступно с версии 1.2.0.
В этом руководстве описано, как настроить параметры устаревания данных в конфигурации,
чтобы автоматически удалять все кортежи в спейсе, которые старше заданного времени.
Подробнее о модуле expirationd
можно узнать в разделе Устаревание данных.
Руководство включает следующие шаги:
Пререквизиты¶
Для выполнения примера требуются:
установленный Docker-образ Tarantool DB;
приложение Docker compose;
утилита TT CLI;
исходные файлы примера
expirationd
.Примечание
Есть два способа получить исходные файлы примера:
Архив с полной документацией Tarantool DB, полученный по почте или скачанный в личном кабинете tarantool.io. Пример архива:
tarantooldb-documentation-1.0.0.tar.gz
. Примерexpirationd
расположен в таком архиве в директории./doc/examples/expirationd/
.Отдельный архив expirationd.tar.gz, скачанный c сайта Tarantool.
Запуск кластера¶
Для успешного запуска кластера должны быть свободны следующие порты:
3300 .. 3304
8080 .. 8084
Перейдите в папку с примером expirationd
:
cd ./doc/examples/expirationd/
Запустите кластер:
docker compose up -d
Описание миграции¶
В руководстве используется миграция из файла ./bootstrap/migrations/source/001_test.lua
примера expirationd
.
В этой миграции создан спейс test
со следующим форматом:
local s = box.schema.space.create('test', {if_not_exists = true})
s:format({
{ name = 'id', type = 'number' },
{ name = 'bucket_id', type = 'unsigned' },
{ name = 'dt', type = 'datetime' },
{ name = 'data', type = 'any' },
})
s:create_index('pk', { parts = {'id'}, if_not_exists = true})
s:create_index('bucket_id', { parts = {'bucket_id'}, unique = false, if_not_exists = true})
Необходимо удалять все записи в спейсе старше заданного количества секунд. Количество секунд задается в конфигурации.
Смотрите также: Проверка устаревших кортежей в спейсе с помощью пользовательских функций
Подключение к узлу и загрузка тестовых данных¶
Подключитесь к экземпляру, используя команду tt connect
.
Команда открывает интерактивную консоль Tarantool, позволяющую работать с базой данных:
tt connect admin:secret-cluster-cookie@localhost:3300
Добавьте тестовые данные в спейс:
crud.insert_object('test', {id = 1, dt = require('datetime').now(), data = 'too'})
crud.insert_object('test', {id = 2, dt = require('datetime').now(), data = 'foo'})
crud.insert_object('test', {id = 3, dt = require('datetime').now(), data = 'bar'})
Посмотреть записи можно в веб-интерфейсе во вкладке Space explorer (http://localhost:8081/admin/space-explorer/hosts). Записи будут удалены спустя заданное в настройках время – 15 секунд.
Конфигурация устаревания данных¶
В конфигурации кластера присутствует следующая секция:
expirationd:
task_name1:
space: test
options:
args:
lifetime_in_seconds: 15
time_create_field: dt
Здесь:
task_name1
– название задачи по устареванию данных;space
– название спейса, по которому идет поиск устаревших кортежей;options.args
– дополнительные опции конфигурации:lifetime_in_seconds
– время жизни кортежа в секундах;time_create_field
– название поля, по которому проверяется время жизни кортежа.
Полное описание опций конфигурации expirationd
приведено в соответствующем разделе Справочника по конфигурации.